﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UtilZ.Dotnet.Ex.ZLog;

namespace UtilZ.Dotnet.Ex.Communication.Net.Ftp
{
    /// <summary>
    /// 设定传输模式（流、块或压缩，S=流模式，B=块模式，C=压缩模式）
    /// Sets the transfer mode (Stream, Block, or Compressed).
    /// </summary>
    internal class FtpMODECommand : FtpCommandAbs
    {
        /***********************************************************************************************************
        * [MODE]（Transfer Mode,传输模式）命令
        * 说明：指定传输模式。
        * 
        * 用法：STRU<Mode><CRLF>
        * 参数：Mode是如下ASCII值的其中之一：
        * S——Stream（流，默认值）
        * B——Block（块）
        * C——Compressed（经过压缩）
        * 
        * 例子：
        * SendData "STRU B" + “/r/n
        * 
        * 返回值如下（粗体表示成功）：
        * 200  命令成功。
        * 421  服务不可用，关闭控制连接。
        * 
        * 如果某项服务获知自己即将关闭，会向所有命令做出这个应答。
        * 500  语法错误，无法识别命令。这其中包括令行过长之类的错误。
        * 501  参数或变元中有语法错误。
        * 504  命令中还没有实现该参数。
        * 530  无法登录。
        * 
        *  
        * 
        ************************************************************************************************************/


        public FtpMODECommand()
            : base()
        {

        }



        protected override string[] GetNames()
        {
            return new string[] { FtpCommands.MODE };
        }



        //protected override IFtpResponse PrimitiveExcute(FtpSession session, string commandLine)
        //{
        //    throw new NotImplementedException();
        //}
    }

}
